home *** CD-ROM | disk | FTP | other *** search
/ IRIX 5.3 for Indy R4400 / IRIX 5.3 for Indy R4400 175MHz.img / dist / eoe2.idb / usr / lib / acct / ckpacct.z / ckpacct
Text File  |  1995-02-28  |  3KB  |  88 lines

  1. #! /bin/sh
  2. #
  3. #    Copyright (c) 1984 AT&T
  4. #      All Rights Reserved
  5.  
  6. #    THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T
  7. #    The copyright notice above does not evidence any
  8. #    actual or intended publication of such source code.
  9.  
  10. #ident    "$Header: /proj/irix5.3/isms/irix/cmd/acct/RCS/ckpacct.sh,v 1.6 1993/11/05 04:24:00 jwag Exp $"
  11.  
  12. #       "periodically check the size of /var/adm/pacct"
  13. #       "if over $1 blocks (500) default, execute turnacct switch"
  14. #       "should be run as adm"
  15.  
  16. PATH=/usr/lib/acct:/bin:/usr/bin:/etc
  17. trap "rm -f /var/adm/cklock*; exit 0" 0 1 2 3 9 15
  18. export PATH
  19.  
  20. _max=${1-250}
  21. _MIN_BLKS=500
  22. cd /var/adm
  23.  
  24. #    set up lock files to prevent simultaneous checking
  25.  
  26. cp /dev/null cklock
  27. chmod 400 cklock
  28. ln cklock cklock1 > /dev/null 2>&1
  29. if test $? -ne 0 ; then exit 1; fi
  30.  
  31. #    check to see if accounting enabled.  If "accton pacct"
  32. #    exits 1, then accounting was enabled.
  33.  
  34. if [ ! -r pacct ]
  35. then
  36.     echo "" > pacct        #    pacct file is created
  37. fi
  38.  
  39. accton pacct 2> /dev/null    #    don't print potential error msg
  40.                  #    to stderr
  41. ACCTSTAT=$?
  42. if test ${ACCTSTAT} -eq 0
  43. then         
  44.      accton  #    accting was disabled. Disable it again
  45. fi
  46.  
  47. #    If there are less than $_MIN_BLKS free blocks left on the /var
  48. #    file system, turn off the accounting (unless things improve
  49. #    the accounting wouldn't run anyway).  If something has
  50. #    returned the file system space, restart accounting.  This
  51. #    feature relies on the fact that ckpacct is kicked off by the
  52. #    cron at least once per hour.
  53. sync;sync;
  54.  
  55. # version for changed df: default is back to blocks not KB!
  56. # Also check /var/adm explicitly, could be a different filesystem from /usr
  57.  
  58. _blocks=`df /var/adm |awk '/avail/ {next} /.*/ {print $5}'`
  59.  
  60. if [ "$_blocks" -lt $_MIN_BLKS   -a  -f /tmp/acctoff ];then
  61.     echo "ckpacct: /var/adm still low on space ($_blocks blks); \c"
  62.     echo "acctg still off"
  63.     ( echo "ckpacct: /var/adm still low on space ($_blocks blks); \c"
  64.     echo "acctg still off" ) | mail root adm
  65.     exit 1
  66. elif [ "$_blocks" -lt $_MIN_BLKS ];then
  67.     if test ${ACCTSTAT} -ne 0; then
  68.         echo "ckpacct: /var/adm too low on space ($_blocks blks); \c"
  69.         echo "turning acctg off"
  70.         ( echo "ckpacct: /var/adm too low on space ($_blocks blks); \c"
  71.         echo "turning acctg off" ) | mail root adm
  72.         nulladm /tmp/acctoff
  73.         turnacct off
  74.         exit 1
  75.     fi
  76. elif [ -f /tmp/acctoff ];then
  77.     echo "ckpacct: /var/adm free space restored; turning acctg on"
  78.     echo "ckpacct: /var/adm free space restored; turning acctg on" | \
  79.         mail root adm
  80.     rm /tmp/acctoff
  81.     turnacct on
  82. fi
  83.  
  84. _cursize="`du -s pacct | sed 's/    .*//'`"
  85. if [ "${_max}" -lt "${_cursize}" ]; then
  86.     turnacct switch
  87. fi
  88.